Tableauの『データ抽出』について理解する
Tableauには『抽出』という機能・概念・ファイル形式が存在します。当ブログでも折に触れて抽出(ファイル)に関するエントリを書いてきましたが、『そもそもどういう仕組みなのか?』という部分にはあまり言及して来ていませんでした。公式ブログの以下のエントリで、そのものズバリ『Tableauデータ抽出を理解する』というテーマで解説がされていましたのでこの内容を読み込んで、抽出ファイルに関する理解度を深めてみたいと思います。
Tableauデータ抽出(TDE)とは何か?
Tableauデータ抽出は、ディスク上に格納されたデータの『圧縮済スナップショット』であり、Tableau可視化のレンダリングに必要なメモリ内に読み込まれます。
分析とデータ探索をサポートするために最適なTDEの設計を構成する2つのポイントがあります。1つ目は、TDEは『カラムナ型(列指向型)ストレージ』であるという点です。従来のRDBMSの場合は『行』の単位でデータを管理しますが、カラムナ型の場合は『列』の値の単位でまとめて管理・格納を行います。結果として、アクセスして列の値を集計するために必要な入出力を大幅に削減する事が出来ます。その他詳細については以下ドキュメント等をご参照ください。
- 列指向データベースマネジメントシステム - Wikipedia
- Amazon redshiftのご紹介
- Column-Oriented Database Systems - VLDB 2009 Tutorial(PDF)
TDE設計2つ目のポイントは、データがどのようにメモリに読み込まれ、Tableauで使われているかという部分に影響を与える『構築方法』に関するものです。これはどのようにTDEが『アーキテクチャを認識しているか』を理解するためのとても重要な部分です。基本的に、アーキテクチャはTDEがコンピュータのメモリ、RAMからハードディスクまで全てを使い、その特性に合った動作をするように働きます。
TDEの側面をより良く理解するには、どのようにTDEが生成され、可視化ビューのデータソースとして使用されているかを見て行きましょう。Tableauが抽出ファイルを作成する時、まずはじめにTDEの構造を定義し、そして基になるソースの各カラムに対応する個別のファイルを作成します。(これが、"抽出の際には必要なカラムだけ選択しておいた方が良い"というTipsの理由でもあります。)
Tableauはデータを収集し、ソートし、圧縮してそれぞれのファイルに各列の値を格納します。Tableau8.2以降では、ソートと圧縮のプロセスが高速化され、抽出ファイル作成の時間も削減出来ています。ここで気になるのは、TDEがメモリにロードされる時に解凍されるのかどうかという点です。答は『No』。圧縮はストレージ要件を削減するために用いられます。圧縮技術はTDEカラムナ型ストアを最適化するために使用され、各列はTDEストア内の"memory-mapped file"となります。
TDEの作成を完了させるために、個々の列ファイル"memory-mapped file(メモリマップトファイル)"の構造を成すメタデータでは結合されます。これはアーキテクチャを構成する上で重要な部分でもあります。メモリマップトファイルの詳細については以下をご参照ください。
TDEはメモリマップトファイルなので、TableauがTDEからデータを要求する時に、データはOSを通じて直接メモリに読み込まれます。Tableauはそれを起動させるためにTDEを開いたり解凍したり、何らかの処理を行う必要はありません。必要に応じて、全ての要求されたデータがTableauで使えるようにOSがRAMからデータを移動させます。これは重要なポイントであり、Tableauがマシン上の利用可能なRAM(で扱える規模)を超える規模のクエリを実行出来る事を意味します。
要求された列のデータのみがRAMに読み込まれます。ただし、幾つかの微妙な最適化もここで為されます。例えば、典型的なOSレベルの最適化で言うとメモリマップトファイル内のデータに対するアクセスが連続しているのを認識し、アクセス速度を向上させるために先読みを行う点等です。メモリマップトファイルはユーザーや可視化ビューからのアクセス数の多寡に限らず、OSによって一度だけ読み込まれます。使用の際はメモリにTDEのコンテンツ全体をロードする必要は無いので、ハードウェア要件やコスト要件等、Tableau Serverの配備は合理的に保たれます。TDEはMac OS X、Linux OS、Windowsをサポートしています。32bit/64bit双方の対応もなされています。より詳細なブレークスルー情報については以下で読むことが出来ます。
まとめ
以上、小ネタではありましたがTabelauに於ける抽出ファイルの仕組みについてのご紹介でした。色々な技術を用いた手法である事が分かりますね。状況に拠っては扱うデータの規模等も大きくなってくる事でしょうし、この『抽出』の機能をフルに活用して行きたいところですね!こちらからは以上です。